--[[
描述 ： 单行文本可移动控件
作者 ： gengdy
时间 ： 15/04/11
]]

UILabel = Class(MLView,'UILabel')

UILabel.Style_Common		= MLGraphics.Style_Common; --字体正常
UILabel.Style_Bold			= MLGraphics.Style_Bold;   --字体加粗

UILabel.ALIGN_LEFT    		= 0;  	 -- 左对齐
UILabel.ALIGN_CENTER  		= 1; 		 -- 中对齐
UILabel.ALIGN_RIGHT   		= 2;  	 -- 右对齐
UILabel.id     		  		= nil;	 -- 唯一标识
UILabel.text   		  		= nil;	 -- 显示文本
UILabel.fontHeight    		= nil;	 -- 字体高度
UILabel.fontColor     		= nil;	 -- 字体背景颜色
UILabel.align         		= nil;	 -- 对齐方式

UILabel.viewCtrl      		= nil; 	 -- 所属viewCtrl

UILabel.mWidth        		= nil;     -- 宽度
UILabel.mHeight       		= nil;     -- 高度

UILabel.isAllowMoveShow     = nil;	 -- 是否滑动
UILabel.txtView       		= nil;	 -- 文字view
UILabel.tmpView       		= nil;	 -- 滑动时的临时文字view

UILabel.mDelay        		= nil;	 -- 类似定时器的开关控制
UILabel.mVSpace       		= nil;
UILabel.mIsDestory    		= nil;


--[[
功能   ： 初始化 UILabel 实例
参数   ： text  	   --  文本
         width     --  宽度
         height    --  高度
         viewCtrl  --  所属viewCtrl
返回   ： 窗体
]]

function UILabel:init(text, width, height, viewCtrl, id)
  width  = width or UITheme.LABEL_WIDTH;
  height = height or UITheme.LABEL_HEIGHT;
  self.viewCtrl = viewCtrl;
  self:initView(width, height, viewCtrl, id);

  -- 初始化
  self.fs = UILabel.Style_Common;
  self.mWidth =  width;
  self.mHeight = height;
  self.isAllowMoveShow = false;
  self.tmpView = nil;
  self.fontHeight = AW(UITheme.LABEL_FONT_HEIGHT);
  self.fontColor = UITheme.LABEL_FONT_COLOR;
  self.align = UILabel.ALIGN_LEFT;
  self.text = text;
  self.mVSpace = nil;
  self.mIsDestory =  false;

  return self;
end

--[[
功能   ： 设置文本
参数   ： text --- 文本
返回   ： 无
]]
function  UILabel:setText(text)
  self.text = text;
  self:draw()
end


--[[
功能   ： 画控件
参数   ： text --- 文本
返回   ： 无
]]
function  UILabel:draw()
  if not self.text then return end
  local g = self:getGraphic();
  g:clear();
  local w, h = self:getWH();
  local strw = MLNative.measStringWidth(self.text, self.fontHeight, self.fs);
  local color = self.fontColor
  if self.mIsFocus then
    color = self.fontFocusColor or self.fontColor;
  end
  if self.bgImage then
    g:drawImage(self.bgImage, 0, 0, self.mWidth, self.mHeight);
  end
  
  --文字可以移动
  --print('self.isAllowMoveShow==',self.isAllowMoveShow)
  if self.isAllowMoveShow then
    --文字view
    self.txtView = MLView.new():initView(strw, h,self.viewCtrl);
    self:add(self.txtView, 0, 0);
    local g = self.txtView:getGraphic();
    g:clear();
    g:drawString(self.text, 0, (h-self.fontHeight)/2, color, self.fontHeight, self.fs);
    --首先文字view长度增加  AW(50) 为文字滚动重复时的中间间隔
    self.txtView:setWH(strw+AW(50), h);
    if (strw+AW(50) < w) then
      --文字长度小于屏幕长度
      self.txtView:setWH(w+AW(10), h);
      self.tmpView = MLView.new():initView(w+AW(10), h,self.viewCtrl);
    else
      --文字长度大于、等于屏幕长度-AW(50)
      self.tmpView = MLView.new():initView(strw+AW(50), h,self.viewCtrl);
    end
    --创建第二个文字view
    local g = self.tmpView:getGraphic();
    g:clear();
    g:drawString(self.text, 0, (h-self.fontHeight)/2, color, self.fontHeight, self.fs);
    local offX = self.txtView:getWH();
    self:add(self.tmpView, offX, 0);

    -- MLNative.Delay(self, 'move', 1000);

    self.time = MLTimer:initTimer(self.viewCtrl);
    self.time.onTimer = function ( )
      -- body
      if self.txtView and self.tmpView then
        local offX, offY = self.txtView:getXY();
        local offXX, offYY = self.tmpView:getXY();
        self.txtView:setXY(offX-10, offY);
        self.tmpView:setXY(offXX-10, offYY);

        local w, h = self.txtView:getWH();
        local ww, hh = self.tmpView:getWH()
        if offX+w < 0 then
          self.txtView:setXY(ww+offXX-10, offY);
        end
        if offXX+ww < 0 then
          self.tmpView:setXY(w+offX-10, offYY);
        end
        if self.mIsDestory then
          self.time:stop();
        end
        return;
      end
    end
    self.time:start(1000, true);


    if self.txtView == nil then
    --print ('---self.txtView = nil--1');
    -- self.mIsDestory = true;
    end
    if self.tmpView == nil then
    --	print ('---self.tmpView = nil--1');
    -- self.mIsDestory = true;
    end
  else
    --不移动 处理 文字居中等效果
    local x, y = 0, (h-self.fontHeight)/2;
    if(strw >= w or self.align == self.ALIGN_LEFT) then
      x = 0;
    elseif self.align == self.ALIGN_CENTER then
      x = (w-strw)/2;
    elseif self.align == self.ALIGN_RIGHT then
      x = w-strw;
    end
    if strw > w then
      local lines = UIUtils.calcTextLine(self.text, w, 1, self.fontHeight, self.fs);
      self.text = lines[1];
    end
--    local g = self:getGraphic();
--    g:clear();
    g:drawString(self.text, x, y, color, self.fontHeight, self.fs);
  end
end


--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]

function UILabel:show()
  self:draw();
end
--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function UILabel:update()
  self:draw();
end

--[[
功能   ： 控件摧毁，停止Delay
参数   ： 无
返回   ： 无
]]
function UILabel:onPause()
--    print("UILabel:onPause")
--    if self.time then
--       self.time:stop();
--       self.time.onTimer = nil;
--    end
--    self.mIsDestory = true;
end

function UILabel:onDestroy(  )
  if self.time then
    self.time:stop();
    self.time.onTimer = nil;
  end
  --print("UILabel:onDestroy")
  self.mIsDestory = true;
end





--[[ 使用方法

local label = UILabel.new():init('我是label文本', AW(300), AW(20), self);
rootView:add(label, AW(10), AH(50));
--]]



